package com.yanqu.road.logic.config.unioncampwar;

import com.yanqu.road.entity.config.system.PropertyWeightItem;
import com.yanqu.road.utils.property.Property;
import com.yanqu.road.utils.string.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 后台配置塞这里面
 */
public class UnionCampWarCenterConfig {
    private int groupId;
    /**
     * 阵营胜方奖励
     */
    private String campWinRewards = "";
    /**
     * 阵营败方奖励
     */
    private String campLoseRewards = "";
    /**
     * 击败门客奖励
     */
    private List<UnionCampWarBattleReward> patronsWinNumExRewardsList = new ArrayList<>();
    private List<PropertyWeightItem> generalLotteryList = new ArrayList<>();
    private List<PropertyWeightItem> specialLotteryList = new ArrayList<>();
    private Map<String, String> keyValueMap = new HashMap<>();

    public UnionCampWarCenterConfig(int groupId) {
        this.groupId = groupId;
    }

    public int getGroupId() {
        return groupId;
    }

    public String getCampRewards(boolean isWin) {
        return isWin ? this.campWinRewards : this.campLoseRewards;
    }

    public String getBattleRewards(int holdId, int winNum) {
        UnionCampWarBattleReward rewardConfig = null;
        for (UnionCampWarBattleReward battleReward : this.patronsWinNumExRewardsList) {
            if (holdId < battleReward.getStartHoldId()) {
                break;
            }
            rewardConfig = battleReward;
        }
        if (null == rewardConfig) {
            return "";
        }
        return rewardConfig.getBattleRewards(winNum);

    }

    public List<PropertyWeightItem> getGeneralLotteryList() {
        return generalLotteryList;
    }

    public List<PropertyWeightItem> getSpecialLotteryList() {
        return specialLotteryList;
    }

    /**
     * 后台配置调用这个初始化
     *
     * @param key
     * @param value
     */
    public void initCenterConfig(String key, String value) {
        if (key.equals("SHANGBANG_REWARD_RESULT")) {
            //101000=20;101000=20@101000=10;101000=10
            String[] campRewards = value.split("@");
            this.campWinRewards = campRewards[0];
            this.campLoseRewards = campRewards[1];
        } else if (key.equals("SHANGBANG_HOLD_WIN_EXTRA_REWARD")) {
            //1(0-101000=20=0;101000=20=1#51-101000=10=0;101000=10#101-101000=5=0;101000=5=0)2(0-101000=20=0;101000=20=0#51-101000=10=0;101000=10=0#101-101000=5=0;101000=5=0)
            String[] strAttrs = value.split("\\)");
            for (String strAttr : strAttrs) {
                String[] str2Attrs = strAttr.split("\\(");
                int holdId = Integer.valueOf(str2Attrs[0]);
                String attrs = str2Attrs[1];
                UnionCampWarBattleReward battleReward = new UnionCampWarBattleReward(holdId);
                battleReward.initNumRewards(attrs);
                this.patronsWinNumExRewardsList.add(battleReward);
            }
        } else if (key.equals("SHANGBANG_LOTTERY_GENERAL")) {
            //101000=2000=1;101000=1000=1;101000=200=1;101000=100=1;101000=50=1
            String[] strAttrs = value.split(";");
            for (String strAttr : strAttrs) {
                List<Integer> list = StringUtils.stringToIntegerList(strAttr, "=");
                PropertyWeightItem item = new PropertyWeightItem();
                item.setWeight(list.get(2));
                item.setProperty(new Property(list.get(0), list.get(1)));
                this.generalLotteryList.add(item);
            }
        } else if (key.equals("SHANGBANG_LOTTERY_SPECIAL")) {
            //101000=2000=1;101000=1000=1;101000=200=1;101000=100=1;101000=50=1
            String[] strAttrs = value.split(";");
            for (String strAttr : strAttrs) {
                List<Integer> list = StringUtils.stringToIntegerList(strAttr, "=");
                PropertyWeightItem item = new PropertyWeightItem();
                item.setWeight(list.get(2));
                item.setProperty(new Property(list.get(0), list.get(1)));
                this.specialLotteryList.add(item);
            }
        } else {
            keyValueMap.put(key, value);
        }
    }

    public int getIntValue(String key){
        String value = keyValueMap.get(key);
        if (null == value){
            return 0;
        }
        return Integer.valueOf(value);
    }

    public long getLongValue(String key){
        String value = keyValueMap.get(key);
        if (null == value){
            return 0l;
        }
        return Long.valueOf(value);
    }

    public String getValue(String key){
        String value = keyValueMap.get(key);
        if (null == value){
            return "";
        }
        return value;
    }

    public static void main(String[] args) {
        String input = "90:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)|150:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)|270:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)|390:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)|570:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)|750:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)|930:1(0-110249=30=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=50=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=80=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=120=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)2(0-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=100=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)5(0-110249=10=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#50-110249=20=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#200-110249=40=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3#500-110249=60=0;119157=1=1;110211=1=3;110005=1=3;110001=1=3;110016=2=3;110160=10=3)";
        String[] split = input.split("\\|");
        for (String s : split) {
            String[] split1 = s.split(":");
            Integer openDay = Integer.valueOf(split1[0]);
            String value = split1[1];
            String[] strAttrs = value.split("\\)");
            List<UnionCampWarBattleReward> list = new ArrayList<>();
            for (String strAttr : strAttrs) {
                String[] str2Attrs = strAttr.split("\\(");
                int holdId = Integer.valueOf(str2Attrs[0]);
                String attrs = str2Attrs[1];
                UnionCampWarBattleReward battleReward = new UnionCampWarBattleReward(holdId);
                battleReward.initNumRewards(attrs);
                list.add(battleReward);
            }
        }

    }
}
